<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>直前の閉じていない HTML/XML タグを閉じる | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀マクロトップへ</a>
        <li><div class="list-title">
    <span class="no">546</span>
    <a class="thread-title" href="546.html#546">直前の閉じていない HTML/XML タグを閉じる</a></div>
    <ul><li><div class="list-title">
    <span class="no">547</span>
    <a class="thread-title" href="546.html#547">要手動修正</a></div>
    </li><li><div class="list-title">
    <span class="no">549</span>
    <a class="thread-title" href="546.html#549">Re:直前の閉じていない HTML/XML タグを閉じる</a></div>
    <ul><li><div class="list-title">
    <span class="no">550</span>
    <a class="thread-title" href="546.html#550">Re2:直前の閉じていない HTML/XML タグを閉じる</a></div>
    <ul><li><div class="list-title">
    <span class="no">551</span>
    <a class="thread-title" href="546.html#551">Re3:直前の閉じていない HTML/XML タグを閉じる</a></div>
    </li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=546>
    <span class="no">[546]</span>
    <a class="thread-title" href="#546">直前の閉じていない HTML/XML タグを閉じる</a>
    <span class="author">gis_dur</span>
    <time datetime="2012-02-04T11:21:02">2012年02月04日 11:21</time></h1>
    <div class="body">コツコツバージョンアップし続けていたものをリリースします。<br>今も需要あるかなあ？<br><br>/**********************************************************<br>**  Close Last Tag 3.0                                   **<br>***********************************************************<br>**  A "Sakura-Editor Macro" using WSH 5.6                **<br>**  For sakura.exe ver.1.6.2.0 and over                  **<br>**                               zlib/libpng ライセンス  **<br>**                      Copyright (C) 2004-2012 gis_dur  **<br>***********************************************************<br>**【動作】                                               **<br>**  カーソル位置より前にある HTML/XML タグを             **<br>**  ファイル先頭に向かって検索し、                       **<br>**  1. 終了タグのない開始タグ                            **<br>**  2. 閉じていないHTMLコメント        &lt;!--      --&gt;     **<br>**  3. 閉じていないCDATAブロック       &lt;![CDATA[ ]]&gt;     **<br>**  4. 閉じていないJSPスクリプトレット &lt;%        %&gt;      **<br>**  5. 閉じていないJSPコメント         &lt;%--      --%&gt;    **<br>**  がある場合、対応する終了タグを挿入します。           **<br>**  コメントタグ内は無視します。                         **<br>**********************************************************/<br><br>// サクラエディタ unicode 版の場合は true にする<br>var UNICODE_VER = true;<br>// xml モード（大文字・小文字を区別する）<br>var XML_MODE = false;<br>// 挿入した閉じタグの後ろにカーソルを移動するかどうか<br>var MOVE_CURSOR = true;<br>// 閉じタグを省略可能な要素名<br>var NO_CLOSE_TAG = "," +<br>[<br>  "area", "base", "basefont", "bgsound", "br",<br>  "col", "embed", "frame", "hr", "img",<br>  "input", "isindex", "keygen", "link", "meta",<br>  "nextid", "param", "spacer", "wbr"<br>].join(",") + ",";<br><br>/*********************************************************/<br><br>// シェル<br>if (typeof(Shell) == "undefined") {<br>  Shell = new ActiveXObject("WScript.Shell");<br>}<br><br>// 文字列拡張<br>if (typeof(String.prototype.is_wide) == "undefined") {<br>  String.prototype.is_wide = function() {<br>    if (UNICODE_VER) return false;<br>    if (this.length == 0) return false;<br>    var c = (this.length == 1) ? this : this.charAt(0);<br>    return (!c.match(/[ア-ンァィゥェォッャュョ゛゜ー、。「」・]/) &amp;&amp; escape(c).length &gt;= 4);<br>  };<br>}<br><br>(function() {<br>  if (!XML_MODE) {<br>    NO_CLOSE_TAG = NO_CLOSE_TAG.toUpperCase();<br>  }<br>  // タグを表す正規表現<br>  var TAG_CHARS = "s!\"#$%&amp;\'()=~|^\\`{+*}&lt;&gt;?@[;],/";<br>  (function(){<br>    var tmp = "";<br>    for (var i=0; i&lt;TAG_CHARS.length; i++) {<br>      tmp += "\\"+TAG_CHARS.charAt(i);<br>    }<br>    TAG_CHARS = "[^"+tmp+"]+";<br>  })();<br>  var TAGS_EXPRESSION = new RegExp();<br>  TAGS_EXPRESSION.compile("&lt;!--|--&gt;|&lt;!\\[CDATA\\[|\\]\\]&gt;|&lt;%--|--%&gt;|&lt;%|%&gt;|&lt;"+TAG_CHARS+"([^&gt;]*/&gt;)?|&lt;\\/"+TAG_CHARS+"", "g");<br> <br>  // データ<br>  var stack = new Array();<br>  var ins_text = "";<br>  var err_text = "";<br> <br>  // ステート<br>  var is_comment = false;<br>  var is_cdata = false;<br>  var is_jsp_comment = false;<br>  var is_jsp = false;<br>  var is_error = false;<br> <br>  // テキストをすべて取得<br>  Editor.CancelMode(0);<br>  var cursorX = Number(Editor.ExpandParameter('$x')) - 1;<br>  var cursorY = Number(Editor.ExpandParameter('$y')) - 1;<br>  Editor.SelectAll(0);<br>  var all_text = Editor.GetSelectedString(0);<br>  Editor.CancelMode(0);<br> <br>  // 改行を統一<br>  all_text = all_text.replace(/\r\n|\r|\n/g, "\n");<br>  var all_lines = all_text.split("\n");<br>  var num_lines = all_lines.length;<br> <br>  // カーソル以前のテキストをすべて取得<br>  var tmp_text = all_lines[cursorY];<br>  if (tmp_text == null) {<br>    tmp_text = "";<br>  }<br>  if (num_lines-(cursorY+1) &gt; 0) {<br>    all_lines.splice(cursorY+1, num_lines-(cursorY+1));<br>  }<br>  for (var i=0; i&lt;cursorX; i++) {<br>    if (tmp_text.charAt(i).is_wide()) {<br>      cursorX--;<br>    }<br>  }<br>  all_lines[cursorY] = tmp_text.substring(0, cursorX);<br> <br>  // タグを取得<br>  var all_tags = all_lines.join(" ").match(TAGS_EXPRESSION);<br>  var num_tags = (all_tags == null)? 0: all_tags.length;<br> <br>  // 直前の開始タグを検索<br>  for (var i=num_tags-1; i&gt;=0; i--) {<br>    // タグ文字列取得<br>    var now_text = all_tags[i];<br>    if (!XML_MODE) {<br>      now_text = now_text.toUpperCase();<br>    }<br> <br>    // 特殊なステートにある場合<br>    if (is_comment) {<br>      if (now_text == "&lt;!--") {<br>        is_comment = false;<br>      }<br>      continue;<br>    }<br>    else if (is_cdata) {<br>      if (now_text == "&lt;![CDATA[") {<br>        is_cdata = false;<br>      }<br>      continue;<br>    }<br>    else if (is_jsp_comment) {<br>      if (now_text == "&lt;%--") {<br>        is_jsp_comment = false;<br>      }<br>      continue;<br>    }<br>    else if (is_jsp) {<br>      if (now_text == "&lt;%") {<br>        is_jsp = false;<br>      }<br>      continue;<br>    }<br> <br>    // 特殊なステートに遷移する場合<br>    if (now_text == "--&gt;") {<br>      is_comment = true;<br>      continue;<br>    }<br>    else if (now_text == "&lt;!--") {<br>      ins_text = "--&gt;";<br>      break;<br>    }<br>    else if (now_text == "]]&gt;") {<br>      is_cdata = true;<br>      continue;<br>    }<br>    else if (now_text == "&lt;![CDATA[") {<br>      ins_text = "]]&gt;";<br>      break;<br>    }<br>    else if (now_text == "--%&gt;") {<br>      is_jsp_comment = true;<br>      continue;<br>    }<br>    else if (now_text == "&lt;%--") {<br>      ins_text = "--%&gt;";<br>      break;<br>    }<br>    else if (now_text == "%&gt;") {<br>      is_jsp = true;<br>      continue;<br>    }<br>    else if (now_text == "&lt;%") {<br>      ins_text = "%&gt;";<br>      break;<br>    }<br>    // 閉じタグ不要<br>    else if (now_text.indexOf("/&gt;") != -1) {<br>      continue;<br>    }<br>    // 閉じタグのスタックに追加<br>    else if (now_text.indexOf("&lt;/") == 0) {<br>      now_text = now_text.substring(2);<br>      stack.push(now_text);<br>      continue;<br>    }<br> <br>    // 要素名取得<br>    now_text = now_text.substring(1);<br> <br>    // 省略可能なタグの場合<br>    if (NO_CLOSE_TAG.indexOf(","+now_text+",") != -1) {<br>      if (stack.length == 0) {<br>        continue;<br>      }<br>      else {<br>        tmp_text = stack.pop();<br>        if (now_text != tmp_text) {<br>          stack.push(tmp_text);<br>        }<br>        continue;<br>      }<br>    }<br>    // 通常のタグの場合<br>    else {<br>      if (stack.length == 0) {<br>        ins_text = "&lt;/" + all_tags[i].substring(1) + "&gt;";<br>        break;<br>      }<br>      else {<br>        tmp_text = stack.pop();<br>        if (now_text != tmp_text) {<br>          is_error = true;<br>          err_text += "タグの包含関係が不正です。\r\n";<br>          err_text += "&lt;"+now_text+"&gt; ... ... &lt;/"+tmp_text+"&gt;\r\n";<br>          stack = new Array();<br>          break;<br>        }<br>      }<br>    }<br>  }<br> <br>  // コメント中<br>  if (is_comment) {<br>    is_error = true;<br>    err_text += "コメントの開閉関係が不正です。\r\n";<br>  }<br>  // CDATA 中<br>  else if (is_cdata) {<br>    is_error = true;<br>    err_text += "CDATA ブロックの開閉関係が不正です。\r\n";<br>  }<br>  // JSP コメント中<br>  else if (is_jsp_comment) {<br>    is_error = true;<br>    err_text += "JSP コメントの開閉関係が不正です。\r\n";<br>  }<br>  // JSP 中<br>  else if (is_jsp) {<br>    is_error = true;<br>    err_text += "JSP スクリプトレットの開閉関係が不正です。\r\n";<br>  }<br>  // スタックに終了タグあり<br>  else if (stack.length &gt; 0) {<br>    is_error = true;<br>    err_text += "開始タグのない終了タグが見つかりました。\r\n";<br>    for (var i=0; i&lt;stack.length; i++) {<br>      err_text += "&lt;"+stack[i]+"&gt;\r\n";<br>    }<br>  }<br> <br>  // エラーダイアログ表示<br>  if (is_error) {<br>    Shell.Popup(err_text, 0, "文法エラー", 0);<br>    return;<br>  }<br> <br>  // 終了タグの挿入<br>  Editor.InsText(ins_text);<br> <br>  // カーソルを動かさない場合は、元の位置に戻す<br>  if (!MOVE_CURSOR) {<br>    for (var i=0; i&lt;ins_text.length; i++) {<br>      Editor.Left(0);<br>    }<br>  }<br>})();<br></div></section>
    <ul><li><section><h1 id=547>
    <span class="no">[547]</span>
    <a class="thread-title" href="#547">要手動修正</a>
    <span class="author">gis_dur</span>
    <time datetime="2012-02-04T11:30:53">2012年02月04日 11:30</time></h1>
    <div class="body">UNICODE版サクラエディタをご利用の場合は修正不要です。<br>ANSI版サクラエディタをご利用の場合は、以下の行を手動で修正する必要があります。<br><br>22行目<br>var UNICODE_VER = true;<br>↓<br>var UNICODE_VER = false;<br><br>49行目<br>return (!c.match(/[ア-ンァィゥェォッャュョ゛゜ー、。「」・]/) &amp;&amp; escape(c).length &gt;= 4);<br>↓<br>ア ン ァ ィ ゥ （中略） 「 」 ・ までを半角カナにする<br>※サクラエディタで行全体を選択して、メニューから「変換」「全角カタカナ→半角カタカナ」を実行すると楽です。<br></div></section>
    </li><li><section><h1 id=549>
    <span class="no">[549]</span>
    <a class="thread-title" href="#549">Re:直前の閉じていない HTML/XML タグを閉じる</a>
    <span class="author">pst11841</span>
    <time datetime="2012-02-04T16:22:00">2012年02月04日 16:22</time></h1>
    <div class="body">gis_durさん、待ってました！需要あります！<br><br>早速設定してみました。使ってみたところ、<br>--<br>[Line 49] 文字セットの範囲が不正です。<br>--<br>というエラーが出てしまいます。<br><br>サクラエディタのバージョンは2.0.3.0。<br>49行目の修正はUNICODE版なので必要はないと思います。<br><br>よろしくお願いします。<br><br>▼ gis_durさん<br>&gt; コツコツバージョンアップし続けていたものをリリースします。<br>&gt; 今も需要あるかなあ？<br>&gt; <br>&gt; /**********************************************************<br>&gt; **  Close Last Tag 3.0                                   **<br>&gt; ***********************************************************<br>&gt; **  A "Sakura-Editor Macro" using WSH 5.6                **<br>&gt; **  For sakura.exe ver.1.6.2.0 and over                  **<br>&gt; **                               zlib/libpng ライセンス  **<br>&gt; **                      Copyright (C) 2004-2012 gis_dur  **<br>&gt; ***********************************************************<br>&gt; **【動作】                                               **<br>&gt; **  カーソル位置より前にある HTML/XML タグを             **<br>&gt; **  ファイル先頭に向かって検索し、                       **<br>&gt; **  1. 終了タグのない開始タグ                            **<br>&gt; **  2. 閉じていないHTMLコメント        &lt;!--      --&gt;     **<br>&gt; **  3. 閉じていないCDATAブロック       &lt;![CDATA[ ]]&gt;     **<br>&gt; **  4. 閉じていないJSPスクリプトレット &lt;%        %&gt;      **<br>&gt; **  5. 閉じていないJSPコメント         &lt;%--      --%&gt;    **<br>&gt; **  がある場合、対応する終了タグを挿入します。           **<br>&gt; **  コメントタグ内は無視します。                         **<br>&gt; **********************************************************/<br>&gt; <br>&gt; // サクラエディタ unicode 版の場合は true にする<br>&gt; var UNICODE_VER = true;<br>&gt; // xml モード（大文字・小文字を区別する）<br>&gt; var XML_MODE = false;<br>&gt; // 挿入した閉じタグの後ろにカーソルを移動するかどうか<br>&gt; var MOVE_CURSOR = true;<br>&gt; // 閉じタグを省略可能な要素名<br>&gt; var NO_CLOSE_TAG = "," +<br>&gt; [<br>&gt;   "area", "base", "basefont", "bgsound", "br",<br>&gt;   "col", "embed", "frame", "hr", "img",<br>&gt;   "input", "isindex", "keygen", "link", "meta",<br>&gt;   "nextid", "param", "spacer", "wbr"<br>&gt; ].join(",") + ",";<br>&gt; <br>&gt; /*********************************************************/<br>&gt; <br>&gt; // シェル<br>&gt; if (typeof(Shell) == "undefined") {<br>&gt;   Shell = new ActiveXObject("WScript.Shell");<br>&gt; }<br>&gt; <br>&gt; // 文字列拡張<br>&gt; if (typeof(String.prototype.is_wide) == "undefined") {<br>&gt;   String.prototype.is_wide = function() {<br>&gt;     if (UNICODE_VER) return false;<br>&gt;     if (this.length == 0) return false;<br>&gt;     var c = (this.length == 1) ? this : this.charAt(0);<br>&gt;     return (!c.match(/[ア-ンァィゥェォッャュョ゛゜ー、。「」・]/) &amp;&amp; escape(c).length &gt;= 4);<br>&gt;   };<br>&gt; }<br>&gt; <br>&gt; (function() {<br>&gt;   if (!XML_MODE) {<br>&gt;     NO_CLOSE_TAG = NO_CLOSE_TAG.toUpperCase();<br>&gt;   }<br>&gt;   // タグを表す正規表現<br>&gt;   var TAG_CHARS = "s!\"#$%&amp;\'()=~|^\\`{+*}&lt;&gt;?@[;],/";<br>&gt;   (function(){<br>&gt;     var tmp = "";<br>&gt;     for (var i=0; i&lt;TAG_CHARS.length; i++) {<br>&gt;       tmp += "\\"+TAG_CHARS.charAt(i);<br>&gt;     }<br>&gt;     TAG_CHARS = "[^"+tmp+"]+";<br>&gt;   })();<br>&gt;   var TAGS_EXPRESSION = new RegExp();<br>&gt;   TAGS_EXPRESSION.compile("&lt;!--|--&gt;|&lt;!\\[CDATA\\[|\\]\\]&gt;|&lt;%--|--%&gt;|&lt;%|%&gt;|&lt;"+TAG_CHARS+"([^&gt;]*/&gt;)?|&lt;\\/"+TAG_CHARS+"", "g");<br>&gt; <br>&gt;   // データ<br>&gt;   var stack = new Array();<br>&gt;   var ins_text = "";<br>&gt;   var err_text = "";<br>&gt; <br>&gt;   // ステート<br>&gt;   var is_comment = false;<br>&gt;   var is_cdata = false;<br>&gt;   var is_jsp_comment = false;<br>&gt;   var is_jsp = false;<br>&gt;   var is_error = false;<br>&gt; <br>&gt;   // テキストをすべて取得<br>&gt;   Editor.CancelMode(0);<br>&gt;   var cursorX = Number(Editor.ExpandParameter('$x')) - 1;<br>&gt;   var cursorY = Number(Editor.ExpandParameter('$y')) - 1;<br>&gt;   Editor.SelectAll(0);<br>&gt;   var all_text = Editor.GetSelectedString(0);<br>&gt;   Editor.CancelMode(0);<br>&gt; <br>&gt;   // 改行を統一<br>&gt;   all_text = all_text.replace(/\r\n|\r|\n/g, "\n");<br>&gt;   var all_lines = all_text.split("\n");<br>&gt;   var num_lines = all_lines.length;<br>&gt; <br>&gt;   // カーソル以前のテキストをすべて取得<br>&gt;   var tmp_text = all_lines[cursorY];<br>&gt;   if (tmp_text == null) {<br>&gt;     tmp_text = "";<br>&gt;   }<br>&gt;   if (num_lines-(cursorY+1) &gt; 0) {<br>&gt;     all_lines.splice(cursorY+1, num_lines-(cursorY+1));<br>&gt;   }<br>&gt;   for (var i=0; i&lt;cursorX; i++) {<br>&gt;     if (tmp_text.charAt(i).is_wide()) {<br>&gt;       cursorX--;<br>&gt;     }<br>&gt;   }<br>&gt;   all_lines[cursorY] = tmp_text.substring(0, cursorX);<br>&gt; <br>&gt;   // タグを取得<br>&gt;   var all_tags = all_lines.join(" ").match(TAGS_EXPRESSION);<br>&gt;   var num_tags = (all_tags == null)? 0: all_tags.length;<br>&gt; <br>&gt;   // 直前の開始タグを検索<br>&gt;   for (var i=num_tags-1; i&gt;=0; i--) {<br>&gt;     // タグ文字列取得<br>&gt;     var now_text = all_tags[i];<br>&gt;     if (!XML_MODE) {<br>&gt;       now_text = now_text.toUpperCase();<br>&gt;     }<br>&gt; <br>&gt;     // 特殊なステートにある場合<br>&gt;     if (is_comment) {<br>&gt;       if (now_text == "&lt;!--") {<br>&gt;         is_comment = false;<br>&gt;       }<br>&gt;       continue;<br>&gt;     }<br>&gt;     else if (is_cdata) {<br>&gt;       if (now_text == "&lt;![CDATA[") {<br>&gt;         is_cdata = false;<br>&gt;       }<br>&gt;       continue;<br>&gt;     }<br>&gt;     else if (is_jsp_comment) {<br>&gt;       if (now_text == "&lt;%--") {<br>&gt;         is_jsp_comment = false;<br>&gt;       }<br>&gt;       continue;<br>&gt;     }<br>&gt;     else if (is_jsp) {<br>&gt;       if (now_text == "&lt;%") {<br>&gt;         is_jsp = false;<br>&gt;       }<br>&gt;       continue;<br>&gt;     }<br>&gt; <br>&gt;     // 特殊なステートに遷移する場合<br>&gt;     if (now_text == "--&gt;") {<br>&gt;       is_comment = true;<br>&gt;       continue;<br>&gt;     }<br>&gt;     else if (now_text == "&lt;!--") {<br>&gt;       ins_text = "--&gt;";<br>&gt;       break;<br>&gt;     }<br>&gt;     else if (now_text == "]]&gt;") {<br>&gt;       is_cdata = true;<br>&gt;       continue;<br>&gt;     }<br>&gt;     else if (now_text == "&lt;![CDATA[") {<br>&gt;       ins_text = "]]&gt;";<br>&gt;       break;<br>&gt;     }<br>&gt;     else if (now_text == "--%&gt;") {<br>&gt;       is_jsp_comment = true;<br>&gt;       continue;<br>&gt;     }<br>&gt;     else if (now_text == "&lt;%--") {<br>&gt;       ins_text = "--%&gt;";<br>&gt;       break;<br>&gt;     }<br>&gt;     else if (now_text == "%&gt;") {<br>&gt;       is_jsp = true;<br>&gt;       continue;<br>&gt;     }<br>&gt;     else if (now_text == "&lt;%") {<br>&gt;       ins_text = "%&gt;";<br>&gt;       break;<br>&gt;     }<br>&gt;     // 閉じタグ不要<br>&gt;     else if (now_text.indexOf("/&gt;") != -1) {<br>&gt;       continue;<br>&gt;     }<br>&gt;     // 閉じタグのスタックに追加<br>&gt;     else if (now_text.indexOf("&lt;/") == 0) {<br>&gt;       now_text = now_text.substring(2);<br>&gt;       stack.push(now_text);<br>&gt;       continue;<br>&gt;     }<br>&gt; <br>&gt;     // 要素名取得<br>&gt;     now_text = now_text.substring(1);<br>&gt; <br>&gt;     // 省略可能なタグの場合<br>&gt;     if (NO_CLOSE_TAG.indexOf(","+now_text+",") != -1) {<br>&gt;       if (stack.length == 0) {<br>&gt;         continue;<br>&gt;       }<br>&gt;       else {<br>&gt;         tmp_text = stack.pop();<br>&gt;         if (now_text != tmp_text) {<br>&gt;           stack.push(tmp_text);<br>&gt;         }<br>&gt;         continue;<br>&gt;       }<br>&gt;     }<br>&gt;     // 通常のタグの場合<br>&gt;     else {<br>&gt;       if (stack.length == 0) {<br>&gt;         ins_text = "&lt;/" + all_tags[i].substring(1) + "&gt;";<br>&gt;         break;<br>&gt;       }<br>&gt;       else {<br>&gt;         tmp_text = stack.pop();<br>&gt;         if (now_text != tmp_text) {<br>&gt;           is_error = true;<br>&gt;           err_text += "タグの包含関係が不正です。\r\n";<br>&gt;           err_text += "&lt;"+now_text+"&gt; ... ... &lt;/"+tmp_text+"&gt;\r\n";<br>&gt;           stack = new Array();<br>&gt;           break;<br>&gt;         }<br>&gt;       }<br>&gt;     }<br>&gt;   }<br>&gt; <br>&gt;   // コメント中<br>&gt;   if (is_comment) {<br>&gt;     is_error = true;<br>&gt;     err_text += "コメントの開閉関係が不正です。\r\n";<br>&gt;   }<br>&gt;   // CDATA 中<br>&gt;   else if (is_cdata) {<br>&gt;     is_error = true;<br>&gt;     err_text += "CDATA ブロックの開閉関係が不正です。\r\n";<br>&gt;   }<br>&gt;   // JSP コメント中<br>&gt;   else if (is_jsp_comment) {<br>&gt;     is_error = true;<br>&gt;     err_text += "JSP コメントの開閉関係が不正です。\r\n";<br>&gt;   }<br>&gt;   // JSP 中<br>&gt;   else if (is_jsp) {<br>&gt;     is_error = true;<br>&gt;     err_text += "JSP スクリプトレットの開閉関係が不正です。\r\n";<br>&gt;   }<br>&gt;   // スタックに終了タグあり<br>&gt;   else if (stack.length &gt; 0) {<br>&gt;     is_error = true;<br>&gt;     err_text += "開始タグのない終了タグが見つかりました。\r\n";<br>&gt;     for (var i=0; i&lt;stack.length; i++) {<br>&gt;       err_text += "&lt;"+stack[i]+"&gt;\r\n";<br>&gt;     }<br>&gt;   }<br>&gt; <br>&gt;   // エラーダイアログ表示<br>&gt;   if (is_error) {<br>&gt;     Shell.Popup(err_text, 0, "文法エラー", 0);<br>&gt;     return;<br>&gt;   }<br>&gt; <br>&gt;   // 終了タグの挿入<br>&gt;   Editor.InsText(ins_text);<br>&gt; <br>&gt;   // カーソルを動かさない場合は、元の位置に戻す<br>&gt;   if (!MOVE_CURSOR) {<br>&gt;     for (var i=0; i&lt;ins_text.length; i++) {<br>&gt;       Editor.Left(0);<br>&gt;     }<br>&gt;   }<br>&gt; })();</div></section>
    <ul><li><section><h1 id=550>
    <span class="no">[550]</span>
    <a class="thread-title" href="#550">Re2:直前の閉じていない HTML/XML タグを閉じる</a>
    <span class="author">gis_dur</span>
    <time datetime="2012-03-18T12:56:22">2012年03月18日 12:56</time></h1>
    <div class="body">返事が遅くなってすみません。<br><br>確認したところ、マクロファイルを UTF-8 で保存すると同じ現象が起きました。<br>SJIS で保存すると解消しませんか。<br><br><br>▼ pst11841さん<br>&gt; gis_durさん、待ってました！需要あります！<br>&gt; <br>&gt; 早速設定してみました。使ってみたところ、<br>&gt; --<br>&gt; [Line 49] 文字セットの範囲が不正です。<br>&gt; --<br>&gt; というエラーが出てしまいます。<br>&gt; <br>&gt; サクラエディタのバージョンは2.0.3.0。<br>&gt; 49行目の修正はUNICODE版なので必要はないと思います。<br>&gt; <br>&gt; よろしくお願いします。<br></div></section>
    <ul><li><section><h1 id=551>
    <span class="no">[551]</span>
    <a class="thread-title" href="#551">Re3:直前の閉じていない HTML/XML タグを閉じる</a>
    <span class="author">pst11841</span>
    <time datetime="2012-03-18T20:08:25">2012年03月18日 20:08</time></h1>
    <div class="body">pst11841 です。ご対応ありがとうございます。<br>Shift-JISで保存しなおして、使えるようになりました。<br>これで行きます<br>ありがとうございました！</div></section>
    </li></ul></li></ul></li></ul></li></ul></body></html>